#ifndef _SLICE_H_
#define _SLICE_H_
#include "python3/PythonGrammar30TreeConstants.h"
#include "ast/sliceType.h"
#include "ast/exprType.h"
#include "AstTypes.h"
class IVisitor;
class Slice;
typedef QSharedPointer<Slice> SlicePtr;

class Slice: public sliceType
{
public:
    explicit Slice(const exprTypePtr& lower, const exprTypePtr& upper, const exprTypePtr& step, int nodeId=JJTSLICE);
    virtual ~Slice();
    
    
    exprTypePtr lower();
    void setLower(const exprTypePtr& lower);
    
    exprTypePtr upper();
    void setUpper(const exprTypePtr& upper);
    
    exprTypePtr step();
    void setStep(const exprTypePtr& step);
    
    
    virtual Ast::AstTypes type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _lower;
    exprTypePtr _upper;
    exprTypePtr _step;
};




#endif